#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#include "data.h"

#define NAME_LEN  31
#define MAX_PARTS 100

//函数定义
void init(void);            //程序启动
void quit(void);            //程序退出
void display_menu(void);    //命令菜单
int make_choice(void);
int confirm(const char* msg);

int main() {
	init();  // 程序启动
	for (;;) {
		display_menu();
		int c = make_choice();
		switch (c) {
			case 1:
				read_data();
				break;
			case 2:
				save_data();
				break;
			case 3:
				print_data();
				break;
			case 4:
				query_data();
				break;
			case 5:
				add_data();
				break;
			case 6:
				update_data();
				break;
			case 7:
				delete_data();
				break;
			case 8:
				sort_data();
				break;
			case 9:
				make_chart();
				break;
			default:
				printf("命令错误，请重新选择\n");
				break;
			case 0:
				if (confirm("确定要退出吗？")) quit(); // 仅在确认后退出
				break;
		}
	}
	return 0;
}
void init(void) {
	puts("程序启动");
}
void quit(void) {
	puts("程序退出");
	exit(EXIT_SUCCESS);
}
void display_menu(void) {
	printf("\n1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加\n6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出\n\n");
}
int make_choice(void) {
	int c;     // 用户输入
	int n = 0; // 正确读入的数据项个数
	while (n == 0) {
		printf("请选择：");
		n = scanf("%d", &c); // 尝试读入整数 c
		scanf("%*[^\n]");    // 跳过一行中剩余的字符
	}
	return c;
}
int confirm(const char* msg) {
	char c = 'n';                // 默认选择是 no
	printf("%s(Y/N): ", msg);    // 提示输入 yes/no 进行确认
	scanf(" %c%*[^\n]", &c);     // 读取第一个字符，忽略剩余字符
	return c == 'y' || c == 'Y'; // 返回确认结果
}
